import request from '@/utils/axios'

export type OAuth2ClientType = {
  id: number | undefined
  clientId: string // 客户端 id
  secret: string // 客户端密钥
  name: string // 客户端应用名称
  logo: string // 客户端应用 logo
  description: string // 应用描述
  status: number // 状态
  accessTokenValiditySeconds: number // 访问令牌有效期，单位：秒
  refreshTokenValiditySeconds: number // 刷新令牌有效期，单位：秒
  redirectUris: string[] // 可重定向的 URI 地址
  autoApprove?: boolean // 是否自动授权
  authorizedGrantTypes: string[] // 授权类型
  scopes: string[] // 授权范围
  authorities: string[] // 权限
  resourceIds: string[] // 资源
  additionalInformation: string // 附加信息
  isAdditionalInformationJson?: boolean
  create_time?: Date
}

export interface OAuth2ClientPageReqType extends PageParam {
  name?: string
  status?: number
}

/**
 * OAuth2 客户端接口
 */
export const OAuth2ClientApi = {
  // 新增
  create: (data: OAuth2ClientType) => {
    return request.post({ url: '/system/oauth2-client/create', data, is_mock: true })
  },
  // 修改
  update: (data: OAuth2ClientType) => {
    return request.put({ url: '/system/oauth2-client/update', data, is_mock: true })
  },
  // 删除
  delete: (id: number) => {
    return request.delete({ url: '/system/oauth2-client/delete?id=' + id, is_mock: true })
  },
  // 查询详情
  detail: (id: number) => {
    return request.get({ url: '/system/oauth2-client/detail?id=' + id, is_mock: true })
  },
  // 查询分页列表
  page: (params: OAuth2ClientPageReqType) => {
    return request.get({ url: '/system/oauth2-client/page', params, is_mock: true })
  }
}
